#!/bin/bash  

yaml_file="/sumz/docker-compose.yaml"

# 检查文件是否存在  
if [[ ! -f "$yaml_file" ]]; then  
  echo "错误: 文件 $yaml_file 不存在."  
  exit 1  
fi  

# 初始化数组  
app_name=()  

# 使用 while 循环读取并填充数组  
for line in $(grep 'image:' "$yaml_file" | awk -F'/' '{print $NF}' | awk -F ':' '{print $1}'); do
  app_name+=("$line")  
done   

docker load -i $1 |grep "Loaded image" |while read link_one
do 

  images_name=$(echo $link_one|awk '{print $3}')
  echo "【开始处理镜像】：$images_name"

  found=0
  
  for element in "${app_name[@]}"
    do
      echo $element
      if [[ "$images_name" == *"$element"* ]]; then
        echo "【名称匹配，开始提取旧镜像】"
        old_image=$(grep 'image:' "$yaml_file" |grep $element | awk '{print $2}')

        if [ -n "$old_image" ]; then  
            # 使用 sed 替换找到的镜像路径  
            sed -i.bak "s|$old_image|$images_name|" "$yaml_file"
            echo "已将旧镜像 $old_image 替换为新的镜像: $images_name"
            found=1
            break
        fi
      fi
    done

  # 根据判断结果输出相应的信息
  if [[ $found -ne 1 ]]; then
      echo "[---ERROR---] $images_name 未在匹配到名称，无法处理"
  fi

done


docker-compose -f docker-compose.yaml up -d